home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 4: GNU Archives / Linux Cubed Series 4 - GNU Archives.iso / gnu / binutils.7 / binutils / binutils-2.7 / gas / config / tc-m68k.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-07-04  |  5.1 KB  |  173 lines

  1. /* This file is tc-m68k.h
  2.  
  3.    Copyright (C) 1987, 89, 90, 91, 92, 93, 94, 95, 1996
  4.    Free Software Foundation, Inc.
  5.  
  6.    This file is part of GAS, the GNU Assembler.
  7.  
  8.    GAS is free software; you can redistribute it and/or modify
  9.    it under the terms of the GNU General Public License as published by
  10.    the Free Software Foundation; either version 2, or (at your option)
  11.    any later version.
  12.  
  13.    GAS is distributed in the hope that it will be useful,
  14.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  15.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16.    GNU General Public License for more details.
  17.  
  18.    You should have received a copy of the GNU General Public License
  19.    along with GAS; see the file COPYING.  If not, write to
  20.    the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
  21.  
  22. #define TC_M68K 1
  23.  
  24. #define TARGET_BYTES_BIG_ENDIAN 1
  25.  
  26. #ifdef OBJ_AOUT
  27. #ifdef TE_SUN3
  28. #define TARGET_FORMAT "a.out-sunos-big"
  29. #endif
  30. #ifdef TE_NetBSD
  31. #define TARGET_FORMAT "a.out-m68k-netbsd"
  32. #endif
  33. #ifdef TE_LINUX
  34. #define TARGET_FORMAT "a.out-m68k-linux"
  35. #endif
  36. #ifndef TARGET_FORMAT
  37. #define TARGET_FORMAT "a.out-zero-big"
  38. #endif
  39. #endif
  40.  
  41. #ifdef OBJ_ELF
  42. #define TARGET_FORMAT "elf32-m68k"
  43. #endif
  44.  
  45. #ifdef TE_APOLLO
  46. #define COFF_MAGIC        APOLLOM68KMAGIC
  47. #define COFF_AOUTHDR_MAGIC    APOLLO_COFF_VERSION_NUMBER
  48. #undef OBJ_COFF_OMIT_OPTIONAL_HEADER
  49. #endif
  50.  
  51. #ifdef TE_LYNX
  52. #define TARGET_FORMAT        "coff-m68k-lynx"
  53. #endif
  54. #ifdef TE_AUX
  55. #define TARGET_FORMAT        "coff-m68k-aux"
  56. #endif
  57.  
  58. #ifndef COFF_MAGIC
  59. #define COFF_MAGIC MC68MAGIC
  60. #endif
  61. #define BFD_ARCH bfd_arch_m68k /* for non-BFD_ASSEMBLER */
  62. #define TARGET_ARCH bfd_arch_m68k /* BFD_ASSEMBLER */
  63. #define COFF_FLAGS F_AR32W
  64. #define TC_COUNT_RELOC(x) ((x)->fx_addsy||(x)->fx_subsy)
  65.  
  66. #define TC_COFF_FIX2RTYPE(fixP) tc_coff_fix2rtype(fixP)
  67. #define TC_COFF_SIZEMACHDEP(frag) tc_coff_sizemachdep(frag)
  68. extern int tc_coff_sizemachdep PARAMS ((struct frag *));
  69. #ifdef TE_SUN3
  70. /* This variable contains the value to write out at the beginning of
  71.    the a.out file.  The 2<<16 means that this is a 68020 file instead
  72.    of an old-style 68000 file */
  73.  
  74. #define DEFAULT_MAGIC_NUMBER_FOR_OBJECT_FILE (2<<16|OMAGIC);    /* Magic byte for file header */
  75. #endif /* TE_SUN3 */
  76.  
  77. #ifndef AOUT_MACHTYPE
  78. #define AOUT_MACHTYPE m68k_aout_machtype
  79. extern int m68k_aout_machtype;
  80. #endif
  81.  
  82. #define tc_comment_chars m68k_comment_chars
  83. extern const char *m68k_comment_chars;
  84.  
  85. #define tc_crawl_symbol_chain(a)    {;}    /* not used */
  86. #define tc_headers_hook(a)        {;}    /* not used */
  87. #define tc_aout_pre_write_hook(x)    {;}    /* not used */
  88.  
  89. #define LISTING_WORD_SIZE 2    /* A word is 2 bytes */
  90. #define LISTING_LHS_WIDTH 2    /* One word on the first line */
  91. #define LISTING_LHS_WIDTH_SECOND 2    /* One word on the second line */
  92. #define LISTING_LHS_CONT_LINES 4/* And 4 lines max */
  93. #define LISTING_HEADER "68K GAS "
  94.  
  95. /* Copied from write.c */
  96. #define M68K_AIM_KLUDGE(aim, this_state,this_type) \
  97.     if (aim==0 && this_state== 4) { /* hard encoded from tc-m68k.c */ \
  98.                     aim=this_type->rlx_forward+1; /* Force relaxation into word mode */ \
  99.                     }
  100.  
  101. #ifndef REGISTER_PREFIX
  102. #define REGISTER_PREFIX '%'
  103. #endif
  104.  
  105. #if !defined (REGISTER_PREFIX_OPTIONAL)
  106. #if defined (M68KCOFF) || defined (OBJ_ELF)
  107. #define LOCAL_LABEL(name) (name[0] == '.' \
  108.                && (name[1] == 'L' || name[1] == '.'))
  109. #define FAKE_LABEL_NAME ".L0\001"
  110. #define REGISTER_PREFIX_OPTIONAL 0
  111. #else
  112. #define REGISTER_PREFIX_OPTIONAL 1
  113. #endif
  114. #endif /* not def REGISTER_PREFIX and not def OPTIONAL_REGISTER_PREFIX */
  115.  
  116. #ifdef TE_DELTA
  117. /* On the Delta, `%' can occur within a label name.  I'm assuming it
  118.    can't be used as the initial character.  If that's not true, more
  119.    work will be needed to fix this up.  */
  120. #define LEX_PCT 1
  121. /* On the Delta, dots are not required before pseudo-ops.  */
  122. #define NO_PSEUDO_DOT
  123. #endif
  124.  
  125. extern void m68k_mri_mode_change PARAMS ((int));
  126. #define MRI_MODE_CHANGE(i) m68k_mri_mode_change (i)
  127.  
  128. #ifdef BFD_ASSEMBLER
  129.  
  130. #define tc_frob_symbol(sym,punt) \
  131.     if (S_GET_SEGMENT (sym) == reg_section) punt = 1
  132.  
  133. #define NO_RELOC BFD_RELOC_NONE
  134.  
  135. #ifdef OBJ_ELF
  136.  
  137. /* This expression evaluates to false if the relocation is for a local object
  138.    for which we still want to do the relocation at runtime.  True if we
  139.    are willing to perform this relocation while building the .o file.  */
  140.  
  141. #define TC_RELOC_RTSYM_LOC_FIXUP(FIX)            \
  142.     ((FIX)->fx_r_type != BFD_RELOC_8_PLT_PCREL    \
  143.      && (FIX)->fx_r_type != BFD_RELOC_16_PLT_PCREL    \
  144.      && (FIX)->fx_r_type != BFD_RELOC_32_PLT_PCREL    \
  145.      && (FIX)->fx_r_type != BFD_RELOC_8_GOT_PCREL    \
  146.      && (FIX)->fx_r_type != BFD_RELOC_16_GOT_PCREL    \
  147.      && (FIX)->fx_r_type != BFD_RELOC_32_GOT_PCREL)
  148.  
  149. #define tc_fix_adjustable(X) tc_m68k_fix_adjustable(X)
  150. #endif
  151.  
  152. #else
  153. #define NO_RELOC 0
  154. #endif
  155.  
  156. #define DIFF_EXPR_OK
  157.  
  158. extern void m68k_init_after_args PARAMS ((void));
  159. #define tc_init_after_args m68k_init_after_args
  160.  
  161. extern int m68k_parse_long_option PARAMS ((char *));
  162. #define md_parse_long_option m68k_parse_long_option
  163.  
  164. #define md_operand(x)
  165.  
  166. #define TARGET_WORD_SIZE 32
  167. #define TARGET_ARCH bfd_arch_m68k
  168.  
  169. extern struct relax_type md_relax_table[];
  170. #define TC_GENERIC_RELAX_TABLE md_relax_table
  171.  
  172. /* end of tc-m68k.h */
  173.